﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
//每⼀次从待排序的数据元素中选出最⼩（或最⼤）的⼀个元素，存放在序列的起始位置，直到全部待
//排序的数据元素排完 。

void SelectSort(int* a, int n)
{
	/*int begin = 0, end = n - 1;
	while (begin < end)
	{
		int mini = begin, maxi = begin;
		for (int i = begin; i <= end; i++)
		{
			if (a[i] > a[maxi])
			{
				maxi = i;
			}
			if (a[i] < a[mini])
			{
				mini = i;
			}
		}
		if (begin == maxi)
		{
			maxi = mini;
		}
		swap(&a[mini], &a[begin]);
		swap(&a[maxi], &a[end]);
		++begin;
		--end;
	}*/

	int begin = 0;
	int end = n - 1;
	while (begin < end)
	{
		int min = begin;
		int max = begin;
		for (int i = begin; i <= end; i++)
		{
			if (a[i] > a[max])
			{
				max = i;
			}
			if (a[i]<a[min])
			{
				min = i;
			}
			
		}
		if (begin == end)
		{
			max = min;
		}
		swap( a[min], a[begin]);
		swap( a[max], a[end]);
		++begin;
		--end;
	}


}


////选择排序
//void selectionSort(vector<int>& arr) {
//	int n = arr.size();
//	for (int i = 0; i < n - 1; i++) {
//		int minIndex = i;
//		for (int j = i + 1; j < n; j++) {
//			if (arr[j] < arr[minIndex]) {
//				minIndex = j;
//			}
//		}
//		swap(arr[i], arr[minIndex]);
//	}
//}
int main()
{
	int arr[5] = { 2,5,4,3,1 };
	SelectSort(arr, 5);

	for (int i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}

	


	return 0;

}


